home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Utils / EDBG / screg.e < prev    next >
Encoding:
Text File  |  1997-06-09  |  1.8 KB  |  60 lines

  1. -> screg.e
  2.  
  3. OPT MODULE
  4.  
  5. MODULE '*sctext', '*eexe'
  6.  
  7. EXPORT OBJECT scrollreg OF scrolltext PRIVATE
  8.   txt:PTR TO LONG, frame:stackframe
  9. ENDOBJECT
  10.  
  11. CONST LIST_SIZE=20
  12.  
  13. PROC scrollreg(stackframe:PTR TO stackframe) OF scrollreg
  14.   DEF m:PTR TO LONG,x
  15.   IF (m:=List(LIST_SIZE))=NIL THEN Raise("MEM")
  16.   SetList(m,LIST_SIZE)
  17.   self.txt:=m
  18.   MapList({x},m,m,`String(13))
  19.   IF ForAll({x},m,`x)=FALSE THEN Raise("MEM")
  20.   copyframe(stackframe,self.frame)
  21.   pokeregs(m,stackframe,self.frame)
  22.   self.settext(m,13)
  23. ENDPROC
  24.  
  25. PROC copyframe(st:PTR TO stackframe,old:PTR TO stackframe)
  26.   CopyMem(st,old,SIZEOF stackframe-4)
  27.   old.stack[]:=st.stack
  28. ENDPROC
  29.  
  30. SET C, V, Z, N, X
  31.  
  32. CONST S=$2000, T=$8000, I=$0E00
  33.  
  34. PROC pokeregs(t:PTR TO LONG,st:PTR TO stackframe,old:PTR TO stackframe)
  35.   DEF a, b, regs:PTR TO LONG
  36.   regs:=old.regs
  37.   FOR a:=0 TO 7 DO StringF(t[a],'D\d=$\z\h[8]\c',a,b:=st.regs[a],IF b=regs[a] THEN " " ELSE "*")
  38.   FOR a:=0 TO 6 DO StringF(t[a+9],'A\d=$\z\h[8]\c',a,b:=st.regs[a+8],IF b=regs[a+8] THEN " " ELSE "*")
  39.   StringF(t[16],'A7=$\z\h[8]\c',b:=st.stack,IF b=old.stack[] THEN " " ELSE "*")
  40.   StringF(t[18],'PC=$\z\h[8]\c',b:=st.returnpc,IF b=old.returnpc THEN " " ELSE "*")
  41.   b:=st.status
  42.   StringF(t[19],'ST=\c\c\c\c\c\c\c\c\c\c',
  43.           IF b AND T THEN "T" ELSE " ",
  44.           IF b AND S THEN "S" ELSE " ",
  45.           IF a:=Shr(b AND I,9) THEN "I" ELSE " ",
  46.           IF a THEN "0"+a ELSE " ",
  47.           IF b AND X THEN "X" ELSE " ",
  48.           IF b AND N THEN "N" ELSE " ",
  49.           IF b AND Z THEN "Z" ELSE " ",
  50.           IF b AND V THEN "V" ELSE " ",
  51.           IF b AND C THEN "C" ELSE " ",
  52.           IF b=old.status THEN " " ELSE "*")
  53.   copyframe(st,old)
  54. ENDPROC
  55.  
  56. PROC refreshreg(stackframe:PTR TO stackframe) OF scrollreg
  57.   pokeregs(self.txt,stackframe,self.frame)
  58.   self.refreshwindow()
  59. ENDPROC
  60.